package 设计模式.责任链模式;

import 我的JDK基础数据结构.HashMap.HashMap;
import 设计模式.责任链模式.管理人员.AdminAuth;
import 设计模式.责任链模式.管理人员.AgentAuth;
import 设计模式.责任链模式.管理人员.BusinessAuth;
import 设计模式.责任链模式.管理人员.OAAuth;

import java.util.Map;

/**
 * @description:
 * @author: 小白白
 * @create: 2021-10-10
 **/

public class AuthManager {

    public enum OaType {
        DEVICE,
        ORDER,
    }

    private Map<OaType, OAAuth> map = new HashMap<>();

    public AuthManager() {
        OAAuth deviceAuth = new BusinessAuth("业务员", "小黑")
                .setNextAuth(new AgentAuth("经理", "小王"));
        map.put(OaType.DEVICE, deviceAuth);
        OAAuth orderAuth = new BusinessAuth("业务员", "小柏")
                .setNextAuth(new AgentAuth("经理", "小云")
                        .setNextAuth(new AdminAuth("管理员","小白")));
        map.put(OaType.ORDER, orderAuth);
    }

    public static void main(String[] args) {

        AuthManager authManager = new AuthManager();
        OAAuth oaAuth = authManager.map.get(OaType.ORDER);
        oaAuth.doAuth();
        oaAuth.getNextAuth().doAuth();
        // ... 实现类可以实现更多逻辑
    }

}
